开始之前:

1. 识别表情输出相关数据

在表情识别功能下,HUSKYLENS 2 能识别7种特定的表情:愤怒(ID为1)、厌恶(ID为2)、恐惧(ID为3)、开心(ID为4)、中性(ID为5)、悲伤(ID为6)和惊讶(ID为7)。以上表情已经在HUSKYLENS 2 出厂时学习完毕,无需用户再次手动学习,表情识别的详细功能使用说明请见表情识别

通过以下示例程序能统计当前HUSKYLENS 2 摄像头画面出识别出的所有表情的数量、输出指定表情的ID。

示例程序如下

#include "unihiker_k10.h"
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2  huskylens;
UNIHIKER_K10 k10;
uint8_t      screen_dir=2;


// 主程序开始
void setup() {
	k10.begin();
	Wire.begin();
  while (!huskylens.begin(Wire)) {
    delay(100);
  }
	k10.initScreen(screen_dir);
	k10.creatCanvas();
	huskylens.switchAlgorithm(ALGORITHM_EMOTION_RECOGNITION);
}
void loop() {
	huskylens.getResult(ALGORITHM_EMOTION_RECOGNITION);
	if ((huskylens.available(ALGORITHM_EMOTION_RECOGNITION))) {
		k10.canvas->canvasText((String("靠近中心的表情ID:") + String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_EMOTION_RECOGNITION), Result, ID)))), 1, 0x0000FF);
		k10.canvas->canvasText((String("表情总数:") + String((huskylens.getCachedResultNum(ALGORITHM_EMOTION_RECOGNITION)))), 3, 0x0000FF);
		k10.canvas->canvasText((String("第一个表情ID:") + String((RET_ITEM_NUM(huskylens.getCachedResultByIndex(ALGORITHM_EMOTION_RECOGNITION, 1-1), Result, ID)))), 5, 0x0000FF);
	}
	k10.canvas->updateCanvas();
	delay(50);
}

上传程序,等待程序上传完成。

当任意以上七种表情出现在摄像头画面中,观察HUSKYLENS 2 的屏幕会将表情框出,显示表情ID、名称和置信度。同时,行空板K10屏幕上显示根据程序输出的结果数据。

**运行结果如下:**根据程序要求,输出了指定的表情ID、画面中表情总数。

Interface Diagram

2. 获取画面中指定表情的相关数据

当画面中出现多个相同ID的表情时,可以使用以下示例程序统计画面中的该ID表情的相关数据。

#include "unihiker_k10.h"
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2  huskylens;
UNIHIKER_K10 k10;
uint8_t      screen_dir=2;


// 主程序开始
void setup() {
	k10.begin();
	Wire.begin();
  while (!huskylens.begin(Wire)) {
    delay(100);
  }
	k10.initScreen(screen_dir);
	k10.creatCanvas();
	huskylens.switchAlgorithm(ALGORITHM_EMOTION_RECOGNITION);
}
void loop() {
	huskylens.getResult(ALGORITHM_EMOTION_RECOGNITION);
	if ((huskylens.available(ALGORITHM_EMOTION_RECOGNITION))) {
		if ((huskylens.available(ALGORITHM_EMOTION_RECOGNITION))) {
			if (((huskylens.getCachedResultByID(ALGORITHM_EMOTION_RECOGNITION, 4) != NULL))) {
				k10.canvas->canvasText((String("ID4表情总数:") + String((huskylens.getCachedResultNumByID(ALGORITHM_EMOTION_RECOGNITION, 4)))), 1, 0x0000FF);
				k10.canvas->canvasText((String("ID4表情名称:") + String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_EMOTION_RECOGNITION, 4), Result, name)))), 3, 0x0000FF);
				k10.canvas->canvasText("第一个ID4表情", 5, 0x0000FF);
				k10.canvas->canvasText((String("的坐标:") + String((String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_EMOTION_RECOGNITION, 4, 1-1), Result, xCenter))) + String((String(",") + String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_EMOTION_RECOGNITION, 4, 1-1), Result, yCenter)))))))), 6, 0x0000FF);
			}
		}
		k10.canvas->updateCanvas();
		delay(50);
	}
}

**运行结果:**如下,当画面中出现多个指定ID的表情时,可获取画面中该ID表情的总数、名称、该ID下某个指定表情的坐标等数据。

Interface Diagram